Linux运维之教你如何定制RPM包 您所在的位置:网站首页 grep 逗号 Linux运维之教你如何定制RPM包

Linux运维之教你如何定制RPM包

2023-05-03 01:36| 来源: 网络整理| 查看: 265

rpmbuild方式定制rpm包

rpmbuid是用于制作rpm格式包的工具。rpm 4.4.x版本之前,rpmbuid工具默认的工作车间为/usr/src/redhat,所以造成普通用户不能制作rpm包。rpm 4.5.x版本开始,将rpmbuid工具默认的工作车间为$HOME/rpmbuild(用户家目录),并且推荐用户尽量不用root账号制作rpm包。

#rpm版本查看方法: [root@moban ~]# rpm -qa|grep rpm redhat-rpm-config-9.1.0-88.el7.centos.noarch rpm-sign-4.11.3-45.el7.x86_64 rpm-4.11.3-45.el7.x86_64 rpm-build-libs-4.11.3-45.el7.x86_64 python-srpm-macros-3-34.el7.noarch perl-srpm-macros-1-8.el7.noarch rpm-libs-4.11.3-45.el7.x86_64 rpm-python-4.11.3-45.el7.x86_64 rpmdevtools-8.3-8.el7_9.noarch rpm-build-4.11.3-45.el7.x86_64

rpmbuild默认工作车间为/usr/lib/rpm/macros这个文件,具体由%_topdir宏变量进行定义。官方不建议在/usr/lib/rpm/macros目录中更改这个工作路径。如果需要则可以在用户家目录下建立一个.rpmmacros隐藏文件,在里面重新定义%_topdir,指向一个新的目录名。内容一般为:

[root@moban ~]# cat .rpmmacros %_topdir %(echo $HOME)/rpmbuild

在%_topdir目录下一般需要有6个目录(实际操作的时候执行命令自动创建): 备注:执行rpmdev-setuptree命令会在当前用户的家目录下的rpmbuild目录(如果该目录不存在也会被自动创建)里自动建立上述目录。

目录名

macros宏名

说明

BUILD

%_builddir

编译rpm包的临时目录

BUILDROOT

%_buildrootdir

编译后生成的软件临时安装目录

RPMS

%_rpmdir

最终生成的可安装rpm包的所在目录

SOURCES

%_sourcedir

所有源代码和补丁文件的存放目录

SPECS

%_specdir

存放SPEC文件的目录(重要)

SRPMS

%_srcrpmdir

软件最终的rpm源码格式存放路径(暂时忽略掉,别挂在心上)

当上述目录建立好之后,将所有用于生成rpm包的源代码、shell脚本、配置文件都拷贝到SOURCES目录里,注意通常情况下源码的压缩格式都为*.tar.gz格式。然后将编辑好的SPEC文件,命名为“软件名-版本.spec”,将其拷贝到SPECS目录下。 最后切换SPEC目录下执行命令制作rpm包:

rpmbuild -bb rpmbuild/SPEC/软件名-版本.spec

SPEC文件是最核心的,在它里面定义了头部信息和一些“阶段”(%prep、%build、%install、%clean、%pre、%post、%preun和%postun),当rpmbuild执行时它首先会去解析SPEC文件,然后依次执行每个“阶段”里的指令。

接下来,我们来简单了解一下SPEC文件的头部。假如,我们的源码包名字是myapp-0.1.0.tar.gz,那么myapp-0.1.0.spec的头部一般如下的样子:

Name: myapp


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有